package com.wuliupai.delivery.wuliupaidelivery.utils;

import android.content.Context;

import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.cache.memory.impl.UsingFreqLimitedMemoryCache;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;
import com.nostra13.universalimageloader.utils.StorageUtils;
import com.wuliupai.delivery.wuliupaidelivery.R;

import org.androidannotations.annotations.EBean;

import java.io.File;

/**
 * 图片工具类
 */
@EBean(scope = EBean.Scope.Singleton)
public class BitmapUtils {

    /**
     * 设置图片缓存的目录
     */
    public static void setImageLoaderCache(Context context) {
        File cacheDir = StorageUtils.getOwnCacheDirectory(context, "imageloader/Cache");
        // 配置ImageLoaderConfiguration
        ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(context)
                .discCache(new UnlimitedDiskCache(cacheDir))
                .threadPoolSize(3)
                .discCacheFileNameGenerator(new Md5FileNameGenerator())
                .writeDebugLogs()
                .memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024))// 内存缓存
                .build();
        ImageLoader.getInstance().init(configuration);// 全局初始化此配置
    }

    /**
     * 加载图片，默认有8px的圆角
     */
    public static DisplayImageOptions loadImageWithDefaultRadius(Context context) {
        return loadImage(context, 8);
    }

    /**
     * 加载图片
     *
     * @param context
     * @param roundCornerRadius 圆角的半径，如果为0，则无圆角
     * @return
     */
    public static DisplayImageOptions loadImage(Context context, int roundCornerRadius) {
        setImageLoaderCache(context);

        DisplayImageOptions.Builder builder = new DisplayImageOptions.Builder();
        builder.showImageOnLoading(R.drawable.rect_approve_transparency)// 设置图片在下载期间显示的图片
                .showImageForEmptyUri(R.drawable.rect_approve_transparency)// 设置图片URI为空或是错误的时候显示的图片
                .showImageOnFail(R.drawable.rect_approve_transparency)// 设置图片加载错误时显示的图片
                .cacheInMemory(true)// 设置下载的图片是否缓存在内存中
                .cacheOnDisc(true);// 设置下载的图片是否缓存在SD卡中
        if(roundCornerRadius>0){
            builder.displayer(new RoundedBitmapDisplayer(roundCornerRadius));
        }
        return builder.build();
    }
}